package com.example.cloudcity.servlet;

import jakarta.servlet.ServletException; // 导入ServletException类，用于处理Servlet异常
import jakarta.servlet.annotation.WebServlet; // 导入WebServlet注解，用于定义Servlet
import jakarta.servlet.http.HttpServlet; // 导入HttpServlet类，作为Servlet的基类
import jakarta.servlet.http.HttpServletRequest; // 导入HttpServletRequest类，用于处理请求
import jakarta.servlet.http.HttpServletResponse; // 导入HttpServletResponse类，用于处理响应
import jakarta.servlet.http.HttpSession; // 导入HttpSession类，用于管理用户会话
import com.google.gson.JsonObject; // 导入JsonObject类，用于处理JSON对象
import java.io.IOException; // 导入IOException类，用于处理输入输出异常

@WebServlet("/LoginServlet") // 定义Servlet的URL映射
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        String username = request.getParameter("username"); // 获取请求中的用户名
        String password = request.getParameter("password"); // 获取请求中的密码
        
        // TODO: 验证用户名和密码
        // 这里简化处理，实际应该查询数据库
        if ("admin".equals(username) && "123456".equals(password)) { // 简单的用户名和密码验证
            // 创建 session
            HttpSession session = request.getSession(); // 获取当前会话
            // 设置 session 过期时间为 30 天
            session.setMaxInactiveInterval(30 * 24 * 60 * 60); // 设置会话最大不活动时间为30天
            
            // 存储用户信息
            session.setAttribute("user", username); // 将用户名存储在会话中
            session.setAttribute("userId", 1); // 假设用户ID为1
            
            // 返回成功响应
            JsonObject jsonResponse = new JsonObject(); // 创建JSON响应对象
            jsonResponse.addProperty("success", true); // 设置成功标志
            response.getWriter().write(jsonResponse.toString()); // 返回JSON响应
        } else {
            // 返回失败响应
            JsonObject jsonResponse = new JsonObject(); // 创建JSON响应对象
            jsonResponse.addProperty("success", false); // 设置失败标志
            jsonResponse.addProperty("message", "用户名或密码错误"); // 设置错误消息
            response.getWriter().write(jsonResponse.toString()); // 返回JSON响应
        }
    }
}